This invention relates generally to identifying software errors, and particularly to detecting errors when an identifier has been mistyped.
Software source code relies on names, called identifiers, to distinguish program entities such as data objects, data members, sub-entities, functions, or subroutines. A common mistake is to misspell or to mistype an identifier, causing a failure to refer to the intended program entity. A feature of many programming languages and environments called static resolution detects these mistakes at the cost of imposing a discipline on the programmer. Static resolution, for example, may require a variable to be defined prior to its use. However, it is common to opt out of static resolution or to use a programming language with limited or no support for it, which may be the design of the programming language. In these cases, a mistyped or misspelled identifier can survive initial development and testing to become a software defect that is costly in its impact and costly to fix.
Algorithms for deriving facts and heuristic inferences about computer programs without actually running those programs are called static analyses. For example, static analysis techniques exist for determining which function definitions might be called from a specific function call site; this is often known as a callgraph analysis. Commercial static analysis tools are software packages that run static analyses on other software, and commonly report results in the form of defects discovered in the analyzed software.
Commercial static analysis tools are software packages that run static analyses on other software, and commonly report results in the form of defects discovered in the analyzed software.